/*
 * Problem.h
 *
 *  Created on: 20/06/2013
 *      Author: marcio
 */

#ifndef PROBLEM_H_
#define PROBLEM_H_


class Problem {
protected:
	Matrix<double> mtx;

	Vector<double> b;

	Vector<double> obj;

	Vector<char> sense;

	Vector<double> ub;

	Vector<double> lb;

	long long rest;

	long long var;

public:
	Problem(long variables);

	Problem(long variables, double* ub, double* lb, double* coef);

	virtual ~Problem();

	bool addRest(double* coef, long* idx, long pos, char sen, double vb);

	bool changeUpperBound(double up, long i);

	bool changeLowerBound(double ul, long i);

	bool changeObjValue(double ob, long i);

	bool changeObj(Vector<double> c);

	double value(Vector<double> x);

};

#endif /* PROBLEM_H_ */
